from bisect import bisect_left
from typing import List

#这种思路把 “暴力遍历” 的低效问题，转化为 “排序 + 二分” 的高效问题，是处理 “区间存在性判断” 的经典技巧
class Solution:
    def findTheDistanceValue(self, arr1: List[int], arr2: List[int], d: int) -> int:
        #for 暴力枚举
        # cnt =0
        # for i in arr1:
        #     arr3 = [abs(i-p) for p in arr2]
        #     arr3.sort()
        #     if arr3[0]>d:
        #         cnt+=1
        # return cnt
        arr2.sort()
        ans=0
        for x in arr1:
            i = bisect_left(arr2,x-d)
            # 核心：区间存在性判断
            if i == len(arr2) or arr2[i]>x+d:
                ans+=1
        return ans
